Conventional digital video systems have traditionally lacked enough memory to buffer a plurality of frames of uncompressed video at the output of a digital video decoder. This lack of output buffer capacity has resulted in designs in which functions such as data retrieval, decoding pictures such as fields or frames, and displaying frames all are tightly integrated and scheduled to produce suitable video playback quality. Thus, the primary driver in video playback system design has been the necessity of having the correct picture, or pictures, appear at the decoder outputs in real time and in the correct display order.
Digital video playback at regular playback speed, referred to as 1×, can be accomplished with relative ease in modern video playback systems. Variable speed playback such as reverse, slow-motion, fast forward, fast forward and reverse (shuttle), and frame-by-frame movement (jog), however, are more difficult to achieve. Further complicating matters is need for a video playback system to respond to real-time user manipulation of jog and/or shuttle controls during video playback. A digital video system not only must provide smooth playback within each of the aforementioned playback modes, but also must smoothly transition from one mode to another responsive to user requests, such as those received via a jog or shuttle control of the video playback system.
For example, one method of producing a slow motion effect is through field interpolation at the output of the decoder performed in synchronism with decoding. This technique can be difficult to implement in a manner that is responsive to a jog or shuttle control. Another case where responsiveness to jog and shuttle controls can be problematic pertains to effects used in dual track movies. Dual track movies typically include effects such as fades or transitions between two or more video tracks. Producing such effects while playing back video in a manner that is responsive to jog and/or shuttle controls can be difficult.
If the digital video system is to play long-Group of Picture (GOP) formatted video, it becomes even more difficult to provide good performance. Long GOP refers to a video compression format, such as MPEG-2 Long GOP, or any other video decoding process, which uses forward and/or backward motion prediction between frames. A common failure of many such video decoders is that playback pauses and repeats frames while the system reacts to a disturbance such as a change in shuttle speed.
Another example is the playing of long-GOP formatted video in reverse. Playing long-GOP in reverse is especially troublesome because conventional decoders only decode some of the frames. These frames are repeated at the output as needed to fill in. This partial decoding arises from the need to decode I and P (“anchor”) frames before decoding their dependant P and B frames. Further, most decoder chips only decode forward within a GOP, resulting in visible artifacts such as jumpy or jerky playback and pauses when changing playback speeds.
While this listing is not intended to be comprehensive, it is illustrative of the complexities involved with providing smooth and responsive video playback in various playback modes. When editing video, however, it is especially important to have fast, smooth, accurate response to the shuttle and jog controls. This can significantly affect the amount of time required for a video editor to locate a cue point in a movie clip, for example, which is an oft repeated video editing task. The problems described above illustrate why long-GOP traditionally has been avoided in video editing systems.
Past designs have read pictures from disk in advance of decoding. The pictures are buffered in memory for some period of time in advance of the pictures being decoded and displayed. While this provides some degree of independence between fetching and decoding, when playback velocity is changed, the system needs to fetch different pictures from disk. The different pictures must be stored in free memory. The digital video system must determine which pictures to free, or remove, from the input buffer. The operation of the video playback system is generally front-end driven and real-time scheduled.
Accordingly, a need exists for a digital video playback system that provides increased control over which pictures are loaded, processed, and provided throughout the video decoding process.